package Str_Comprehensive_Exercise;

public class Code2 {
    public static void main(String[] args) {
        /*给定两个字符串，A和B
        * A的旋转操作符就是将A，最左边的的字符串移动到最右边
        * 例如，若A=‘abcde’,在移动一次之后结果就是‘acdea’
        * 如果在若干次调用操作后，A则变成B，那么返回True
        * 如果不然匹配成功，则返回 false*/

        //1，定义；两个字符串
        String strA = "abcde";
        String strB = "cdeab";



        //2循环旋转并比较
        boolean result = check(strA,strB);

        //3输出
        System.out.println(result);

    }

    public static boolean check(String strA,String strB) {
        String result = null;
        for (int i = 0; i < strA.length(); i++) {
             strA = rotate1(strA);
            if (strA.equals(strB)){//字符串一定要equals
                return true;
            }
        }
        //所有的情况都比较完毕了，还不一样那么直接返回false
        return false;
    }



    //作用：旋转字符串，把左侧的字符串移动到右边去
    //如果我们看到要修改字符串的内容
    //可以把字符串先变成一个字符数组，然后调整字符数组里面数据，最后将数组变成字符串
    public static String rotate(String str) {
        char first = str.charAt(0);
        String end = str.substring(1);
        return end + first;
    }

    public static String rotate1(String str) {//利用叔祖父方法实现字符串的旋转
        char[] arr = str.toCharArray();
        char first = arr[0];
        for (int i = 1; i < arr.length; i++) {
            arr[i-1] = arr[i];
        }
        arr[arr.length-1] = first;
        String result = new String(arr);
        return result;
    }
}
